Recycled version number values in flash memory

ABSTRACT

Various embodiments include methods, apparatus, and systems for assigning a plurality of version number values to instances of a logical entity of a memory device. Each version number value of the plurality version number values may be separately assigned to one of the instances of the logical entity. The version number values may be recycled after the plurality of version number values are assigned. Other embodiments including additional methods, apparatus, and systems are disclosed.

PRIORITY APPLICATION

This application is a divisional of U.S. application Ser. No.14/733,664, filed Jun. 8, 2015, which is a divisional of U.S.application Ser. No. 11/968,510, filed Jan. 2, 2008, which areincorporated herein by reference in their entireties.

FIELD

Embodiments of this disclosure relate to non-volatile memory devices,including managing information in flash memory devices.

BACKGROUND

Non-volatile memory devices such as flash memory devices are used tostore data or information. Flash memory devices reside in many computersand electronic devices, for example, cellular phones, digital cameras,digital audio players, and digital recorders. Flash memory devices mayalso be used as portable storage devices such as portable UniversalSerial Bus (USB) flash drives or “thumb” drives. In some cases, flashmemory devices may substitute for conventional magnetic hard drives incomputers and other electronic devices or systems.

A flash memory device stores information in numerous memory cells, whichare usually formed in a semiconductor chip. A flash memory deviceusually has a programming or writing operation to store information inthe cells, a read operation to read information from the cells, and anerase operation to erase or delete information from the cells.

The information stored in the flash memory device may be updated. Insome cases the same information may be updated many times. Thus, in someupdate technique such as out-of-place update, many instances of theinformation may exist. Some flash memory devices may manage theinstances of the information by giving each instance a different versionidentification value. The device may store the version identificationvalue in some reserved space in the device. At some point, the quantityof instances of the information may become large. Thus, versionidentification value may also become large which may overflow thereserved space. Therefore, there is a need for methods, apparatus, andsystems to improve management of information in flash memory device.

BRIEF DESCRIPTION OF DRAWINGS

FIG. 1 shows a block diagram of a system according to an embodiment ofthe invention.

FIG. 2 shows a block diagram of a memory device according to anembodiment of the invention.

FIG. 3 shows a partial block diagram of a memory device having memoryblocks according to an embodiment of the invention.

FIG. 4 shows instances of a logical entity of a memory device withrecycled version number values according to an embodiment of theinvention.

FIG. 5 shows instances of a logical block of a memory device withrecycled version number values according to an embodiment of theinvention.

FIG. 6 is a chart showing version number values according to anembodiment of the invention.

FIG. 7 is a chart showing correction of potential version erroraccording to an embodiment of the invention.

FIG. 8 shows a flow diagram of a method of recycling version numbervalues according to an embodiment of the invention.

FIG. 9 shows a block diagram of an electronic system having a displayand an imaging device according to an embodiment of the invention.

DETAILED DESCRIPTION

FIG. 1 shows a block diagram of a system 100 according to an embodimentof the invention. System 100 may reside in an electronic system such asa computer, a cellular phone, or a digital camera. As shown in FIG. 1,system 100 may include a memory device 101 having a memory array 102with memory cells 104 to store information such as data from a user andcontrol data generated by system 100. System 100 may also includes amemory controller 103 to control communication between memory device 101and a processor 106 via one or more interfaces or bus 105 and bus 107.

System 100 may further include a management component 119, which mayparticipate in the management of information in system 100, includingassigning version number values to different instances of theinformation in system 100. As mentioned above, in some cases thequantity of instances of the information in a system may become large,leading to a large version identification value. As a result, overflowof the reserved space for the version identification value may occur.

In system 100, management component 119 may further participate inrecycling version number values. Recycling version number values insystem 100 may avoid potential overflow of reserve space for versionnumber values. Further, since the version number values are recycled insystem 100, a relatively smaller reserved space may be used to store theversion number values. Therefore, more space may be available for someother use.

In FIG. 1, arrows 141, 142, and 143 indicate that either the entiremanagement component 119 may reside in only one of memory device 101,memory controller 103, and processor 106, or portions of managementcomponent 119 may be scattered among at least two of memory device 101,memory controller 103, and processor 106. Management component 119 mayinclude software program instructions, firmware, hardware, or acombination thereof. An example of firmware in management component 119includes basic input output system (BIOS) circuitry or circuitry similarto a BIOS circuitry of an electronic system. An example of hardware inmanagement component 119 includes circuit elements such as flip-flopcircuitry, register circuitry, state machine circuitry, and othercircuit elements.

Memory device 101 of FIG. 1 may include non-volatile memory device suchas a flash memory device. Processor 106 may include a general-purposeprocessor (e.g., a processor used in a computer) or an applicationspecific integrated circuit or ASIC (e.g., a processor used in acellular phone or a digital camera). Memory device 101 and memorycontroller 103 and may be formed from the same semiconductor die andenclosed in the same semiconductor package or chip. Memory device 101and memory controller 103 may also be formed from separate semiconductordice and enclosed in separate semiconductor packages or separate chips.In some embodiments of system 100, memory controller 103 may be omitted,and memory device 101 and processor 106 may communicate with each othervia one or both of buses 105 and 107. Memory device 101 may include anembodiment a memory device of FIG. 2.

FIG. 2 shows a block diagram of a memory device 201 according to anembodiment of the invention. Memory device 201 may include a memoryarray 202 with cells 204 arranged in rows and columns. Row decoder 206and column decoder 208 may respond to an address register 212 and accesscells 204 based on row address and column address signals on lines orterminals 210. A data input/output (I/O) circuit 214 may transfer dataor information between cells 204 and terminals 210. Terminals 210 andterminals 211 of memory device 201 may be coupled to an interface or abus such as bus 105 and 107 of FIG. 1.

A control circuit 216 may control activities or operations of memorydevice 201 based on signals on terminals 210 and 211. The operations ofmemory device 201 may include a read operation to read information fromcells 204, a write or programming operation to write or programinformation into cells 204, and an erase operation to erase or deleteinformation from cells 204. The read, write, and erase operations ofmemory device 201 may be performed in connection with various activitiesin memory device 201, such as updating, copying, and deleting theinformation in cells 204.

Control circuit 216 may include a storage area 218, which may includestorage circuit element such as read only memory (ROM), electricalerasable programmable ROM or EEPROM, and register circuitry. Storagearea 218 may include a management component 219, which may include anembodiment of management component 119 of FIG. 1. In FIG. 2, managementcomponent 219 of memory device 201 may participate in the management ofinformation in memory device 201, including assigning version numbervalues to different instances of the information in memory device 201,and recycling the version number values when a version quantity limit isreached. The version quantity limit refers to a maximum quantity ofdifferent version number values that may be assigned. The versionquantity limit may be determined by or stored in management component219.

In FIG. 2, memory device 201 may include a non-volatile memory device.In some embodiments, memory device 201 may include a NAND flash memorydevice where cells 204 may include flash cells arranged in a NAND flashmemory arrangement. In other embodiments, memory device 201 may includea memory device such as a NOR flash memory device, a polymer memorydevice, a ferro-electric random-access memory (FeRAM) device, aphase-change memory (PCM) device (e.g., Ovionics Universal Memory (OUM)device), a nitride read only memory (NROM) device, and amagnetoresistive random access memory (MRAM) device.

One skilled in the art will readily recognize that memory device 201 mayinclude other components, which are omitted from FIG. 2 to focus on thevarious embodiments described herein.

In some embodiments, memory device 201 may include an embodiment of amemory device 301, 401, and 501 of FIG. 3, FIG. 4, and FIG. 5,respectively.

FIG. 3 shows a partial block diagram of a memory device 301 havingmemory blocks according to an embodiment of the invention. Memory device301 may include an embodiment of memory device 201 of FIG. 1. Forclarity, FIG. 3 omits some components of memory device 301. Memorydevice 301 may include a memory array 302 having memory blocks 311, 312,313, 314, and 315. For clarity, FIG. 3 shows detail of only block 311.Other blocks 312, 313, 314, and 315 may include components andarrangement similar or identical to those in block 311. As shown in FIG.3, block 311 may include rows or pages 320. Each page 320 may includesectors 330. Each sector 330 may includes cells 304. Each of blocks 311,312, 313, 314, and 315 may be called an erased block or a physicalblock. Each sector 330 may be called a physical sector.

Each sector 330 may store multiple bytes of information. The informationmay include user data and control or overhead data. For example, eachsector 330 of FIG. 3 may store 512 bytes of user data. Each sector 330,page 320, or both may store one or more bits of control and overheaddata (e.g., version number value) associated with the information storedin a sector, page, or block. In some embodiments, each of blocks 311,312, 313, 314, and 315 of FIG. 3 may include 256 sectors (e.g., 256sectors 330 in block 311).

Each of blocks 311, 312, 313, 314, and 315 may include cells (e.g.,cells 391, 392, 393, 394, or 395) to store the version number value thatmay be assigned to information stored in the block. The informationamong the blocks may be related. For example, information may beinitially stored in block 311, then various activities may be performedon a portion of the information or the entire information. The variousactivities may include one or more of updating, copying, and deletinginformation. A new instance of the information may be generated aftereach of the various activities. Thus, from the information initiallystored in block 311, a quantity of instances of the information may begenerated. The instances of the information may include differentcontents.

The activity of updating of information (or instance of information) ina memory device, such as memory device 301, may include readinginformation from cells at a first location (e.g., at block 311),modifying the information, then writing the modified information tocells at a second location (e.g., at block 312). Thus, when updating theinformation, the content of the information in the cells at the secondlocation may be different from the content of the information in thecell at the first location.

The activity of copying information in a memory device, such as memorydevice 301, may include reading information from cells at a firstlocation (e.g., at block 312), then writing the information to cells ata second location (e.g., at block 313). Thus, when copying informationfrom a first location to a second location, the content of theinformation in the first and second location may be the same.

The activity of deleting information in a memory device, such as memorydevice 301, may include erasing the information at a location (e.g., ata block) using an erase operation.

Memory device 301 may store different instances of information indifferent blocks. To keep track or maintain different instances of theinformation, a version number value may be assigned to a correspondinginstance in a corresponding block. For example, memory device 301 maystore five instances of the information, where each of the fiveinstances may be stored in one of blocks 311, 312, 313, 314, and 315.The version number value assigned to the instance in a particular blockmay be stored in that particular block. For example, cells 391 may storea first version number value of the first instance; cells 392, 393, 394,and 395 may store second, third, fourth, and fifth version numbervalues, respectively, of the second, third, fourth, and fifth instancesof the information.

A version number value may be presented by digital or binary bits. Thus,cells 391, 392, 393, 394, and 395 of FIG. 3 may store bits such as 000,001, 010, 011, and 100, respectively, to represent the first, second,third, fourth, and fifth version number values.

In some embodiments, the version number values of the information inblocks 311, 312, 313, 314, and 315 may be stored in a place outsideblocks 311, 312, 313, 314, and 315. For example, the version numbervalues may be stored in an additional block of memory device 301,similar to one of blocks 311, 312, 313, 314, and 315 of memory array302. In another example, the version number values may be stored in astorage area of memory device 301 such as storage area 218 of memorydevice 201 of FIG. 2. In a further example, the version number valuesmay be stored in a memory controller or a processor such as memorycontroller 103 or processor 106 of FIG. 1.

In some embodiments, the version number values may be recycled so that asmaller quantity of the version number values may be used to assign to agreater quantity of instances of information stored in memory device301. For example, a quantity of five version number values (e.g., 000,001, 010, 011, and 100) may be recycled so that more than five instancesof information may be assigned. In this example, the assignment and therecycling of the version number values may follow an order of 000, 001,010, 011, 100, 000, 001, 010, 011, 100, 000 and so on, such that eachversion number value may be recycled one or more times. As shown in thisexample, the number version values may have an initial value of 000,then after each time a version number value is assigned, the versionnumber value may be increased (e.g., from 000 to 010, and from 010 to011, and so on). When the version quantity limit is reached (five inthis example), the version number value may be reset (e.g., reset to 000in this example). Instead of an increment order, the five version numbervalue in this example may be assigned in a decrement order, e.g., 100,011, 010, 001, 000, 100, 011, 010, 001, 000, 100 and so on. Other ordersmay be used.

The assignment and the recycling of the version number values in memorydevice 301 may be managed by a management component of the memory devicesuch as management component 119 or 219 of FIG. 1 and FIG. 2.

In some embodiments, memory device 301 may include an embodiment of amemory device of FIG. 4.

FIG. 4 shows instances of a logical entity of a memory device 401 withrecycled version number values according to an embodiment of theinvention. For clarity, FIG. 4 omits some components of memory device401. FIG. 4 shows an example of seven physical locations 411, 412, 413,414, 415, 416, and 417, each storing one of seven instances 1, 2, 3, 4,5, 6, and 7 of the same logical entity E. Each of physical locations 411through 417 may include a physical sector, page, block, or group ofblocks such as those in FIG. 3. Logical entity E may represent a logicalsector, page, block, or group of blocks. In some embodiments, each ofphysical locations 411 through 417 may include a physical block having ablock size (e.g., 128 kilobytes), and logical entity E may have alogical size equal to the block size (128 kilobytes) of the physicalblock. The address of logical entity E may be independent from thephysical or geometrical address of physical location 411 through 417. Amanagement component, such as management component 119 or 219 (FIG. 1 orFIG. 2), may map or link the address of logical entity E to the addressof each of physical locations 411 through 417 to track the content ofinformation associated with logical entity E.

Each of the instances 1 through 7 of logical entity E may be assignedwith a version number value such as V1, V2, or V3. As shown in FIG. 4,the version number values V1, V2, and V3 may be recycled such that theymay have an order of V1, V2, V3, V1, V2, V3, and V1. The version numbervalues in FIG. 4 may be recycled after each time a version quantitylimit is reached. As described with reference to FIG. 2, the versionquantity limit refers to a maximum quantity of different version numbervalues that may be assigned.

In FIG. 4, the version quantity limit may be equal to three, indicatingthat a maximum of the three different version number values, such as V1,V2, and V3, may be assigned. Thus, in the example of FIG. 4, the versionquantity limit is reached after versions V1, V2, and V3 are assigned toinstances 1, 2, and 3 of logical entity E. Therefore, version numbervalues V1, V2, V3 may be recycled and assigned to instances 4, 5, and 6of logical entity E. The recycling of versions may be repeated andapplied to other instances of logical entity E. For example, instance 7of logical entity E may be assigned with version number value V1.Therefore, as shown in FIG. 4, the quantity of version number values(e.g., three) may be less than the quantity of instances (e.g., seven)of logical entity E.

Instances 1 through 7 may be related to each other. For example, oneinstance (e.g., instance 2) may be an update or updated version ofanother instance (e.g., instance 1). In another example, one instance(e.g., instance 3) may be a collection of portions of other instances(e.g., a portion of instance 1 and a portion of instance 2).

In FIG. 4, after particular version number value (e.g., V1) is recycledand assigned to a new instance (e.g., instance 4) of logical entity E,the existence of one or more of previous instances of logical entity Eassociated with that particular version number value may be removed,meaning that one or more of previous instances of logical entity Eassociated with that particular version number value may be unavailableto memory device 401 or to other external devices. For example, afterversion number value V1 is assigned to instance 4 of logical entity E,the existence of one or more of instances 1, 2, and 3 of logical block Emay be removed. Removing the existence of an instance of a logicalentity may also means removing an indication that the instance of thelogic entity exists. Removing the existence of an instance of a logicalentity may involve activities such as erasing the instance, marking theinstance invalid, or removing the indication of existence of theinstance from a chart, record, list, or table that tracks or records theexistence of the instance. In some embodiments, after the existence of aparticular instance (e.g., instance 1) of logical entity E is removed,the physical location (e.g., physical location 1) associated with thatparticular instance may be reused to store a new instance of logicalentity E or to store other information. As mentioned above, logicalentity E may represent a logical sector, page, block, or group ofblocks.

FIG. 5 shows instances of a logical block of a memory device 501 withrecycled version number values according to an embodiment of theinvention. FIG. 5 shows an example of five physical blocks 511, 512,513, 514, and 515, each storing one of five instances 521, 522, 523,524, and 525 of the same logical block “B”. FIG. 5 shows an examplewhere each of the five physical blocks may include four pages or rows520, with each row 520 having one of four physical sectors 531, 532,533, and 534. In some embodiments, the number of pages and physicalsectors in each of the five physical blocks may vary. For example,physical blocks 511, 512, 513, 514, and 515 in FIG. 5 may includeembodiments of physical blocks 311, 312, 313, 314, and 315 of FIG. 3.

In FIG. 5, each of instances 521, 522, 523, 524, and 525 of logicalblock B may include four logical sectors, such as logical sectors a1,b1, c1, and d1 of instance 521. Each logical sector (e.g., a1) mayrepresent information stored in a physical sector (e.g., physical sector531). The order of occurrences of a logical sector may be indicated bythe numbers in that logical sector. For example, logical sector a1 mayoccur before logical sector a2, and logical sector a3 may occur afterlogical sector a2.

As shown in FIG. 5, each of instances 521, 522, 523, 524, and 525 oflogical block B may be assigned with a version number value (one of V1,V2, V3, and V4). The version number values in FIG. 5 may be recycledsuch that one version number value may be reused and assigned to morethan one instance of logical block B. For example, version number valueV1 may be initially assigned to instance 521, then the same versionnumber value V1 may be reused and assigned to instance 525 of logicalblock B.

The version number values, such as V1, V2, V3, and V4, may be recycledafter a version quantity limit is reached. As described with referenceto FIG. 4, the version quantity limit refers to a maximum quantity ofdifferent version number values that may be assigned. In the example ofFIG. 5, the version quantity limit may be four. Thus, as shown in FIG.5, after version number values V1, V2, V3, and V4 are assigned to someinitial instances (e.g., 521, 522, 523, and 524) of logical block B,version number values V1, V2, V3, and V4 may be recycled and assigned toother instances of logical B that may occur after the occurrences of theinitial instances of logic block B.

In FIG. 5, instances 521, 522, 523, 524, and 525 of logical block B maybe related to each other such that an instance of logical block B mayinclude at least one of an update of a logical sector from the sameinstance, an update of logic sector from another instance, and a copy ofa logical sector from another instance.

The arrow connecting the logical sectors among instances 521, 522, 523,524, and 525 indicate activities performed to the logical sectors. Theactivities may include updating and copying the logical sectors.

For example, instance 522 may include logical sector b2, which may be anupdate of logical sector b1 from instance 521; logical sector b3 whichmay be an update of logical sector b2; logical sector b4 which may be anupdate of logical sector b3; and logical sector a2 which may be anupdate of logical sector a1 of instance 521.

In another example, instance 523 may include logical sector a2, whichmay be a copy (not an update) of logical sector a2 of instance 522;logical sector b4 which may be a copy of logical sector b4 of instance522; logical sector c2 which may be an update of logical sector c1 ofinstance 521; and logical sector d1 may be a copy of logical sector d1of instance 521.

In another example, instance 524 may include logical sectors c3, d2, a3,and b5, which may be respective updates of logical sectors c2, d1, a2,and b4 of instance 523.

In another example, instance 525 may include logical sector a3, whichmay be a copy of logical sector a3 of instance 524; logical sector b6which may be an update of logical sector b5 of instance 524; logicalsector c3 which may be a copy of logical sector c3 of instance 524; andlogical d2 which may be a copy of logical sector d2 of instance 524.

As shown in FIG. 5, instances 523 may have example variations 533 and543. Instance 525 may have example variations 535 and 545. Variations533, 543, 535, and 545 are described below after the followingdescription.

The description above shows that one instance (e.g., 522 or 524) oflogical block B may include updates of one or more other logical sectorsof logical block B. Another instance (e.g., 523 or 525) of logical blockB may include a combination or collection of one or more updates and oneor more copies of instances from at least one of the instances oflogical block B.

In FIG. 5, a consolidation process or activity may be performed toconsolidate or selectively collect logical sectors among existinginstances of logical block B to generate a new instance of logical blockB. For example, a consolidation process 570 may be performed toselectively collect logical sectors from instances 521 and 522 oflogical block B to generate instance 523 of logical block B. As anotherexample, a consolidation process 571 may be performed to selectivelycollect logical sectors of instances 523 and 524 of logical block B togenerate instance 525 of logical block B.

As shown in FIG. 5, consolidation process 570 or 571 may be performedafter every two instances of logical block B are generated, plus one ormore additional conditions being satisfied, as described below.

For example, after two instances 521 and 522 are generated, a logicalsector such as logical sector c1 of instance 521 is indicated to beupdated, and physical block 512 may be full or have insufficient space(e.g., not enough available cells) to store an update (i.e., c2) oflogical sector c1, because b2, b3, b4, and a2 of instance 522 may occupymost of the available cells in physical block 512. Then, in thisexample, consolidation process 570 may be performed to generate a newinstance of logic block B, which is instance 523. In some embodiments,using the same example herein, consolidation process 570 may beperformed before logic sector c1 is indicated to be updated. Thus, inthese embodiments, instead of logical sector c2 being in instance 523,as shown in FIG. 5, an un-updated logical c1 from instance 521 (samecopy of c1) would be in instance 523, because consolidation process 570may be performed before logical sector c1 is indicated to be updated.

In another example, after two instances 523 and 524 are generated, alogical sector such as logical sector b5 of instance 524 is indicated tobe updated, and physical block 514 may be full or have an insufficientspace to store an update (i.e., b6) of logical sector c5 (because c3,d2, a3, b5 of instance 524 may occupy most of the available cells inphysical block 514). Then, in this example, consolidation process 571may be performed to generate a new instance of logic block B, which isinstance 525. In some embodiments, using the same example herein,consolidation process 571 may be performed before logic sector b5 isindicated to be updated. Thus, in these embodiments, instead of logicalsector b6 being in instance 525, as shown in FIG. 5, an un-updatedlogical b5 from instance 524 (same copy of b5) would be in instance 524,because consolidation process 571 may be performed before logical sectorb5 is selected to be updated.

In FIG. 5, since instance 523 may include a collection of instances 521and 522, as a result of consolidation process 570, instance 523 may beconsidered as the instance with the most current content of logicalblock B. Thus, the existence of one or both of instances 521 and 522 maybe removed after instance 523 is successfully generated. Similarly,since instance 525 may include a collection of instances 523 and 524, asa result of consolidation process 571, instance 525 may be considered asthe instance with the most current content of logical block B. Thus, theexistence of one or both of instances 523 and 524 may be removed afterinstance 525 is successfully generated.

A quantity of instances of logical block B, which exists when each ofconsolidation process 570 and 571 is performed, may be determined basedon an instance quantity limit. In FIG. 5, the instance quantity limitrefers to a maximum quantity of valid instances of logical block B thatmay be selected to be kept or exist at a time in memory device 501. Theinstance quantity limit may have a fixed or variable value. The value ofinstance quantity limit may be stored in a management component, such asmanagement component 119 of FIG. 1. The value of the instance quantitylimit may be set by programming codes. For example, differentprogramming codes may be entered into memory device 501 to set differentvalues for the instance quantity limit. In another example, differentprogramming codes may be entered into a controller or processor, such asmemory controller 103 or processor 106 of FIG. 1, to set differentvalues for the instance quantity limit.

A consolidation process, such as consolidation process 570 or 571, maybe performed when, along with other conditions, the quantity of existinginstances of logical block B is equal to the instance quantity limit. InFIG. 5, the instance quantity limit may be set at two, meaning that theup to two valid instances of logical block B may exist at a time inmemory device 501. Therefore, as described above, each of consolidationprocess 570 or 571 may be performed after every two instances of logicalblock B exist along with one or more additional conditions beingsatisfied, such as when a logical sector is indicated to be updated andthe space of a physical block associated with an instance of the logicalblock B is insufficient to store the updated logical sector.

FIG. 5 shows an example where the value for the instance quantity limitmay be set at two. In some embodiments, the instance quantity limit maybe set at another value. For example, when the instance quantity limitis three, a consolidation process, such as consolidation process 570 or571, may be performed after the generation of every three instances ofthe logical block.

As mentioned above, FIG. 5 shows example variations 533 and 543 ofinstance 523, and example variations of variations 535 and 545 ofinstance 525. Variations 533 and 543 show that logical sectors ofinstance 523 may be stored in different orders. For example, variation533 shows logical sectors of instance 523 with an order of c2, a2, b4,and d1, indicating that logical sector c2 may be stored before the otherlogical sectors. In another example, variation 543 shows logical sectorof instance 523 with an order of a2, b4, d1, and c2, indicating thatlogical sector c2 may be stored after (instead of before) the otherlogical sectors.

Variations 535 and 545 show that logical sectors of instance 525 may bestored in different orders. For example, variation 535 shows logicalsectors of instance 525 with an order of b6, a3, d2, and c3, indicatingthat logical sector b6 may be stored before the other logical sectors.In another example, variation 545 shows logical sector of instance 525with an order of a3, d2, c3, and b6 indicating that logical sector b6may be stored after (instead of before) the other logical sectors.

The order of logical sectors in instance 523 may be called a sequentialorder because logical sectors a2, b4, c2, and d1 of instance 523 followthe same order of logical sectors a1, b1, c1, and d1 of instance 521.Similarly, in instance 525, the order of logical sectors a3, b6, c3, andd2 may also be called a sequential order.

The order of logical sectors in instance 522 may be called a randomorder because logical sectors b2, b3, b4, and a2 in instance 522 followan order that is different from order of logical sectors a1, b1, c1, andd1 of instance 521. Similarly, the order of the logical sectors in eachof instance 522, 524, and variations 533, 543, 535, and 545 may also becalled a random order.

Therefore, the order of logical sectors of in an instance of a logicalblock, generated by consolidation of multiple instances, may follow asequential or random order.

FIG. 6 is a chart showing version number values according to anembodiment of the invention. The system or memory device associated withchart 600 may include an embodiment of system 100 or memory device 101,201, 301, 401, or 501 described above with reference to FIG. 1 throughFIG. 6. In FIG. 6, V1, V2, V3, and V4 may represent V1, V2, V3, and V4of FIG. 5.

In FIG. 6, each of times T1 through T9 indicates real time. For example,time T2 may indicate a particular time that occurs after time T1. Theinterval between two times, e.g., between times T1 and T2, may bemeasured in unit such as a fraction of a second, minute, day, month, oryear.

Chart 600 may represent a record, list, or table that may be maintainedand managed by a management component, such as management component 119of FIG. 1 or management component 219 of FIG. 2. Thus, software programinstructions, firmware, hardware, or a combination thereof, may be usedto implement chart 600. For example, a state machine circuitry of themanagement component may be used to control the activities in chart 600.

In the following description, the logical entity described withreference to chart 600 is assumed to be a logical block, such as logicalblock B of memory device 501 of FIG. 5. The instance quantity limit ofthe instances of the logical block is set at an example value of two.Thus, in chart 600 up to two instances of the logical block may existand be considered valid at a time.

At time T1, a first instance of the logical block may be stored in thememory device. The first instance may be assigned with a version numbervalue V1. The logical block with the first instance may be calledlogical block-version 1. Thus, at time T1, logical block-version 1 mayexist. Logical block-version V1 at time T1 may be similar to logicalblock B, version 1, of FIG. 5. In FIG. 6, the number “1” in a column V1at time T1 indicates the existence of logical block-version V1. Thenumber “0” in a column at a particular time (e.g., column V2, V3, or V4at time T1) indicates that the existence of the version of the logicalblock, at that particular time, does not exist or has been removed. Forexample, “0” in each of columns V2, V3, and V4 indicates that logicalblock-versions V2, V3, and V4 do not exist at time T1.

At time T2, the first instance of the logical block, or logicalblock-version V1, may be updated. Thus, a second instance of the logicalblock, or logical block-version V2, may be generated. Logicalblock-version V2 at time T2 may be similar to logical block B, version2, of FIG. 5.

At time T3 in FIG. 6, one of the first and second instances (logicalblock-version V1 or version V2) may be updated. Thus, a third instanceof the logical block, or logical block-version V3, may be generated.

In FIG. 6, since the instance quantity limit of the instances in chart600 is set at an example value of two, the instance quantity limit isreached at time T2 because two instances of the logical block (logicalblock-version 1 and version 2) exist at time T2. Thus, to generatelogical block-version 3, a consolidation process 660 may be performedduring time T3.

As a result of consolidation process 660, logical block-version V3 mayinclude a collection of one of at least a portion of the first instance(logical block-version V1) and at least a portion of the second instance(logical block-version V2). Since logical block-version V3 may include acollection of logical block-version V1 and version V2, the content oflogical block-version V3 may be considered as the most current contentof the logical block. Thus, after logical block-version V3 is generated,the existence of logical block-version V1 or V2, or both may be removed.

At time T4, the number “0” in column V1 indicates that the existence oflogical block-version 1 is removed. Thus, at time T4, logicalblock-version 2, and logical block-version 3 remain. After the existenceof logical block-version V1 (the first instance) is removed, versionnumber value V1 may be recycled and reused to assign to another instanceof the logical block.

At time T5, the existence of the instance associated logicalblock-version V2 may be removed. Thus, at time T5, only logicalblock-version 3 remains. Like version number value V1, after theexistence of logical block-version V2 (the second instance) is removed,version number value V2 may be recycled and reused to assign to anotherinstance of the logical block.

At time T6, the third instance of the logical block, or logicalblock-version V3, may be updated. Thus, a fourth instance of the logicalblock, or logical block-version V4, may be generated. Logicalblock-version V4 at time T6 may be similar to logical block B, version4, of FIG. 5.

At time T7, one of the third and fourth instances (logical block-version3 or 4) may be updated. Thus, a fifth instance of the logical block maybe generated. Like the situation at time T2, the instance quantity limit(two) is reached at time T6 because two instances of the logical block(logical block-version 3 and version 4) exist at time T6. Thus, anotherconsolidation process 661 may be performed to consolidate the instancesof logical block B, version 3 and version 4 to generate the fifthinstance of the logical block. As shown in FIG. 6, consolidation process661 may be performed during time T7 to generate the fifth instance oflogical block. A new version number value (perhaps version V5) may beassigned to the fifth instance of the logical block. However, the newversion number value may be unnecessary because version number values V1and V2 are available since time T6. Thus, instead of a new versionnumber value, version number value V1 or V2 may be reused and assignedto the fifth instance of the logical block. Thus, the fifth instance ofthe logical block may be assigned with either version number value V1 orV2.

At time T8, a fifth instance of the logical block, generated from theconsolidation of the third and fourth instances, is assigned withversion number value V1. Thus, at time T8, logical block-version V1 (newversion V1 assigned to the fifth instance) exists. Logical block-versionV1 at time T8 may be similar to instance 625 of logical block B, version1, of FIG. 5. In FIG. 6, after logical block-version V1 at time T8 isgenerated, the existence of logical block-version V3 may be removed, asindicated by “0” in column V3 at time T8. Thus, at time T8, logicalblock-version 1, and logical block-version 4 remain. The instance (fifthinstance) of logical block-version 1 at time T8 may be considered themost current instance of the logical block in comparison with the fourthinstance (logical block-version 4) because the instance of logicalblock-version 1 is a consolidation of the third and fourth instances ofthe logical block. Therefore, the existence of logical block-version 4may be removed.

At time T9, the number “0” column V4 indicates that the existence oflogical block-version V4 is removed. Thus, at time T9, only logicalblock-version 1 remains. As shown in FIG. 6, the situation at time T9 issimilar to the situation at time T1.

Therefore, the activities or processes in chart 600 after time T9 may berepeated with activities similar to those from time T1 to time T9, suchas assigning version number values to instances, updating instances,consolidating instances, removing the existence of one or moreinstances, and recycling the version number values.

FIG. 7 is a chart showing correction of potential version erroraccording to an embodiment of the invention. The logical entitydescribed with reference to chart 700 in FIG. 7 is assumed to be alogical block such as logical bock B of FIG. 5.

At times T1 and time T2 in FIG. 7, logical block-version 1 and version 2may be generated.

At time T3, a system or device associated with chart 700 may have apower-up sequence (e.g., device is turned on) and discover (e.g., byscan for version of logical blocks) that logical block-version 1,version 2, and version 3 exist, as indicated by the number “1” in eachof column V1, V2, and V3. This situation (V1, V2, and V3 exist aftersystem or device power-up) is unlike the situation at time T3 of FIG. 6in that the existence of V1, V2, and V3 at time T3 in FIG. 6 may occurduring an ongoing updating process, not as a result of a discovery(e.g., by device scanning) during a power-up sequence such as thepower-up sequence at time T3 in FIG. 7. Thus, when the instance quantitylimit associated with chart 700 is set at two (as in chart 700), theexistence logical block-version 1, version 2, and version 3 at time T3(e.g., during power-up) may indicate that a potential version error mayhave occurred, because the quantity of existing instances (three) attime T3 is greater than the instance quantity limit (two). Thus, in thesituation like the one at time T3 of FIG. 7 (three logical versions arediscovered during a power-up), a correction process 780 may be performedto correct the potential version error, as described below.

In chart 700, the version number values V1, V2, V3, and V4 may beassigned in a recycled order of, e.g., V1, V2, V3, V4, V1, V2, V3, V4,and so on. Thus, in this recycled order, logical block-version V3 attime T3 may be considered as the version that is generated after thegeneration of logical block-version V1 and version V2. Like thesituation at time T3 of FIG. 6, logical block-version V3 in FIG. 7 maybe generated as a result of a consolidation of logical block-version V1and version V2. Thus, at time T3 of FIG. 7, among the three versions,logical block-version 3 may be considered as a potential corrupted orerror version, because is generated before a power-up and after logicalblock-version 1 and version 2. The potential corruption of logicalblock-version 3 may be caused by an interruption while logicalblock-version V3 is generated. For example, the interruption may occuras a result of a mechanical disturbance (e.g., the memory device beingdropped) or an electrical disturbance (e.g., supply power to the memorydevice being disconnected, turned off, or run out such as out ofbattery). The existence of logical block-version V1, version V2, andversion V3 at time T3 may be obtained or determined by a memoryoperation such as a memory scan during a power-up sequence of the memorydevice, a periodic memory scan, a random memory scan, or other memoryoperations.

Since logical block-version 3 from time T3 may be considered as thepotential error version, correction process 780 may reduce the quantityof existing instances from three to two to comply with the instancequantity limit of two (used as an example in chart 700). Correctionprocess 780 may reduce the quantity of existing instances by removingthe existence of logical block-version V3 at time T4 (indicated by thenumber “0” in column V3 at time T4), and considering logicalblock-version V1 and version V2 as valid or available versions(indicated by the number “1” in column V1 and V2). Then, a consolidationprocess similar to consolidation process 660 of FIG. 6 may be performed,e.g., at time T5, to consolidate instances of logical block-version V1and version V2. Like the situation at time T3 of FIG. 6, at time T9 ofFIG. 7, the existence of logical block-version 1, version 2, and version3 may occur during an ongoing updating process (from time T4), unlikethe situation at time T3 of FIG. 7 where the existence of logicalblock-version 1, version 2, and version 3 may be discovered during apower-up sequence.

The activities at times T6, T7, and T8 in chart 700 may be similar oridentical to those of times T4, T5, and T6 chart 600 of FIG. 6.

At time T9 of FIG. 7, like the situation at time T3 of FIG. 7, anotherthree versions V1, V3, and V4 of the logical block may be discoveredduring a power-up sequence (e.g., device is turned on after aninterruption). Thus, a potential error version may exist at time T9.Therefore, another correction process 781 may be performed. Since theversion number values V1, V2, V3, and V4 may be assigned in a recycledorder of V1, V2, V3, V4, V1, V2, V3, V4, the instance of logicalblock-version 1 may be a consolidation of the instances of logicalblock-version 3 and version 4. Thus, logical block-version 1 may be thepotential error version. Therefore, correction process 781 may removethe existence of logical block-version V1 at time T10 (indicated by thenumber “0” in column V1 at time T10, and consider logical block-versionV3 and version V4 as valid or available versions (indicated by thenumber1” in column V3 and V4). Then, a consolidation process, similar toconsolidation process 661 of FIG. 6, may be performed, e.g., at timeT11, to consolidate instances of logical block-version V3 and versionV4.

The activities at times T12 and T13 in chart 700 may be similar oridentical to those of times T8 and T9 600 of FIG. 6.

In chart 700, at time T3, if only two logical block versions (e.g., onlyV1 and V2 instead of V1, V2, and V3) are discovered during a power-upsequence, then correction process 780 may be omitted. Similarly, at timeT9, if only two logical block versions (e.g., only V3 and V4 instead ofV1, V3, and V4) are discovered during a power-up sequence, thencorrection process 781 may be omitted.

FIG. 8 shows a flow diagram of a method 800 of recycling version numbervalues of a logical block according to an embodiment of the invention.Method 800 may be used in system 100, memory device 101, 201, 301, 401,or 501, and systems or memory devices associated with chart 600 or chart700 described above with reference to FIG. 1 through FIG. 7.

Activity 810 of method 800 may include determining an instance quantitylimit. As described above, the instance quantity limit refers to amaximum number of valid instances that may exist at a time in the memorydevice used in method 800. The instance quantity limit may be chosen andstored in a management component such as management component 119 ofFIG. 1 or management component 219 of FIG. 2. For example, an instancequantity limit of two (as used in the example for FIG. 5, FIG. 6, andFIG. 7) may be chosen and stored. In method 800, the instance quantitylimit may be represented by I, where I is an integer.

Activity 820 may include determining a version quantity limit. Asdescribed above, the version quantity limit refers to a maximum quantityof different version number values that may be assigned to instances ofa logical entity. In method 800, the version quantity limit may bepresented by V, where V is an integer.

In some embodiments, to manage the assignment of version number valuesassigned to instances, such as in FIG. 5, FIG. 6, and FIG. 7, therelationship between version quantity limit V and the instance quantitylimit I may be expressed as V=2*I (V equals two times I), meaning thatversion quantity limit V may be a function of instance quantity limit I.Thus, in some embodiments, based on the expression V=2*I, the versionquantity limit V may be determined when the instance quantity limit I isknown, and the instance quantity limit I may be determined when theversion quantity limit I is known. For example, when instance quantitylimit I is equal to two, the version quantity limit V is four (4=2*2).Thus, four different version number values (e.g., V1, V2, V3, and V4)may be used to assign to instances of a logical entity. As anotherexample, when instance quantity limit I is equal to three, the versionquantity limit V is six (6=2*3). Thus, six different version numbervalues may be used.

Activity 830 may include storing instances of a logical entity. Theinstances may include the instances a logical entity stored at physicallocations, such as instance 1 through instance 7 of logical entity Estored at physical locations 411 through 471 of FIG. 4, or instances 521through 525 of logical block B stored at physical locations 511 through525 of FIG. 5.

Activity 840 may include associating version number values to theinstances. In some embodiments, associating the version number values tothe instances may include assigning the version number values to theinstances and storing the version number values. Assigning and storingthe version number values may be performed in fashions similar oridentical to the assigning and storing version number values V1, V2, andV3 described above with reference to FIG. 4, or version number valuesV1, V2, V3, and V4 described above with reference to FIG. 5 through FIG.7.

Activity 850 may include updating at least one of the instances. Theupdate in activity may include updating of instances of a logicalentity, such as logical entity E of FIG. 4 or logical block B of FIG. 6,and updating activities of instances of the logical entity associatedwith chart 600 and 700 of FIG. 6 and FIG. 7.

Activity 860 may include consolidating the instances. The consolidationmay include embodiments of consolidation processes such as consolidationprocess 670 and 671 of FIG. 6 and consolidation process 760 and 761 ofFIG. 7, and consolidation processes at times T3 and T4 of FIG. 7.

Activity 870 may include determining existing quantity of instances. Insome embodiments, activity 870 may scan a memory device to determine theexisting quantity of instances of the logical block at a particulartime. For example, activity 870 may scan a memory device associated withchart 600 or 700 at time T3 in FIG. 6 or FIG. 7.

Activity 880 may include correcting potential version error. Acorrection process may be performed in activity 880. For example, acorrection process may be performed when the quantity of existinginstances (determined from activity 870) is greater than the instancequantity limit (determined from activity 810). The correction processmay include embodiments of the correction process described above withreference to FIG. 7. The correction process in activities 870 may beomitted when the quantity of existing instances is equal to or less thanthe instance quantity limit.

Activity 890 may include recycling the version number values. Therecycling of the version number values may include embodiments of therecycling of version number values such as version number values V1, V2,and V3 described above with reference to FIG. 4, or recycling of versionnumber values V1, V2, V3, and V4 described above with reference to FIG.5 through FIG. 7.

The individual activities of method 800 may not have to be performed inthe order shown or in any particular order. Some activities may berepeated, and others may occur only once. Various embodiments may havemore or fewer activities than those shown in FIG. 8. For example, insome embodiments, method 800 may include the activities or operationsdescribed with reference to FIG. 1 through FIG. 7 above and FIG. 9below.

FIG. 9 shows a network 900 according to an embodiment of the invention.Network 900 may include systems 961 and 962 communicating with eachother via a connection 963. Connection 963 may include a wired orwireless connection. In some embodiments, connection 963 may include aninternet connection.

System 961 may include a processor 910, an image sensor device 920, amemory device 925, a memory controller 930, a graphics controller 940, acircuit module 945, an I/O controller 950, a display 952, a keyboard954, a pointing device 956, peripheral device 958, and a bus 960 totransfer information among the components of system 961. System 961 mayalso include an antenna 970 to transmit and receive informationwirelessly. System 961 may also include a circuit board 902 on whichsome components of system 961 may be located. In some embodiments, thenumber of components of system 961 may vary. For example, in someembodiments, system 961 may omit one or more of display 952, imagesensor device 920, memory device 925, and circuit module 945. System 961may include an embodiment of system 100 of FIG. 1.

Processor 910 may include a general-purpose processor, e.g., a processorused in a computer. Processor 910 may include an application specificintegrated circuit (ASIC), e.g., a processor used in a cellular phone,or a digital camera or camcorder. Processor 910 may comprise a singlecore processor or a multiple-core processor. Processor 910 may executeone or more programming commands to process information to produceprocessed information. The information may include digital outputinformation provided by other components of system 961, such as by imagesensor device 920 or memory device 925.

Image sensor device 920 may include a complementarymetal-oxide-semiconductor (CMOS) image sensor having a CMOS pixel arrayor a charge-coupled device (CCD) image sensor having a CCD pixel array.

Memory device 925 may include a volatile memory device, a non-volatilememory device, or a combination of both. For example, memory device 925may comprise a dynamic random access memory (DRAM) device, a staticrandom access memory (SRAM) device, a flash memory device such as NANDor NOR flash memory device, or a combination of DRAM, SRAM, and flashmemory devices. In some embodiments, memory device 925 may include oneor more embodiments of memory devices 101, 201, 301, 401, or 501described above with reference to FIG. 1 through FIG. 8.

Display 952 may include an analog display or a digital display. Display952 may include a liquid crystal display (LCD), or a plasma display.Display 952 may receive information from other components. For example,display 952 may receive information that is processed by one or more ofimage sensor device 920, memory device 925, graphics controller 940, andprocessor 910 to display information including text and images.

Circuit module 945 may include a circuit module of a vehicle. Circuitmodule 945 may receive information from other components to activate oneor more subsystems of the vehicle. For example, circuit module 945 mayreceive information that is processed by one or more of image sensordevice 920, memory device 925, and processor 910, to activate one ormore of an air bag system of a vehicle, a vehicle security alarm, and anobstacle alert system in a vehicle.

As shown in FIG. 900, system 961 may include a machine-readable medium971. System 962 may include a machine-readable medium 972. Each ofmachine-readable media 971 and 972 may include a memory, e.g., removablestorage media, and any memory including an electrical, optical, orelectromagnetic conductor.

Each of machine-readable medium 971 and 972 may contain thereonassociated information (e.g., computer or software program instructionsand/or data), which when accessed or executed, results in a machine(e.g., components of system 961) performing one or more of theactivities described herein with respect to FIG. 1 through FIG. 9.

Upon reading and comprehending the content of this disclosure, one ofordinary skill in the art will understand the manner in which a softwareprogram can be launched from a computer-readable medium in acomputer-based system to execute the functions defined in the softwareprogram. One of ordinary skill in the art will further understand thevarious programming languages that may be employed to create one or moresoftware programs designed to implement and perform the methodsincluding the activities described herein. The programs may bestructured in an object-orientated format using an object-orientedlanguage such as Java or C++. Alternatively, the programs can bestructured in a procedure-orientated format using a procedural language,such as assembly or C. The software components may communicate using anyof a number of mechanisms well known to those skilled in the art, suchas application program interfaces or interprocess communicationtechniques, including remote procedure calls. The teachings of variousembodiments are not limited to any particular programming language orenvironment.

The illustrations of systems, apparatus, and network herein, such assystems 100, 961, and 962, and memory devices 201, 301, 401, 501, and925, are intended to provide a general understanding of the structure ofvarious embodiments, and not as a complete description of all theelements and features of apparatus and systems that might make use ofthe structures described herein.

The novel apparatus, systems, and method of various embodiments mayinclude, be included, or be used in electronic circuitry used inhigh-speed computers, communication and signal processing circuitry,single or multi-processor modules, single or multiple embeddedprocessors, multi-core processors, data switches, andapplication-specific modules including multilayer, multi-chip modules.Such apparatus and systems may further be included as sub-componentswithin a variety of electronic systems, such as televisions, cellulartelephones, personal computers (e.g., laptop computers, desktopcomputers, handheld computers, tablet computers, etc.), workstations,radios, video players, audio players (e.g., MP3 (Motion Picture ExpertsGroup, Audio Layer 3) players), vehicles, medical devices (e.g., heartmonitor, blood pressure monitor, etc.), set top boxes, and others.

The above description and the drawings illustrate some embodiments ofthe invention to enable those skilled in the art to practice theembodiments of the invention. Other embodiments may incorporatestructural, logical, electrical, process, and other changes. In thedrawings, like features or like numerals describe substantially similarfeatures throughout the several views. Examples merely typify possiblevariations. Portions and features of some embodiments may be includedin, or substituted for, those of others. Many other embodiments will beapparent to those of skill in the art upon reading and understanding theabove description. Therefore, the scope of various embodiments of theinvention is determined by the appended claims, along with the fullrange of equivalents to which such claims are entitled.

The Abstract is provided to comply with 37 C.F.R. § 1.72(b) requiring anabstract that will allow the reader to quickly ascertain the nature andgist of the technical disclosure. The Abstract is submitted with theunderstanding that it will not be used to interpret or limit the scopeor meaning of the claims.

What is claimed is:
 1. A system comprising: a flash memory deviceincluding a memory array to store a plurality of version number valuesand a plurality of instances of a logical block of the flash memorydevice, each of the version number values being assigned to an instanceof the plurality of instances of the logical block; a hardware componentto recycle the plurality of version number values after the plurality ofversion number values reaches a version quantity limit; and at least onehardware processor to process information stored in the flash memorydevice.
 2. The system of claim 1, wherein at least a portion of thehardware component is located inside the flash memory device.
 3. Thesystem of claim 1, wherein at least a portion of the hardware componentis located outside the flash memory device.
 4. The system of claim 1,wherein at least a portion of the hardware component is part of the atleast one hardware processor.
 5. The system of claim 1, furthercomprising an antenna coupled to the flash memory device.
 6. The systemof claim 1, further comprising a pixel array coupled to the flash memorydevice.
 7. A system comprising: a flash memory device to: store a firstinstance of a logical block of a flash memory device at a first physicallocation of the flash memory device; assign a first version number valueto the first instance; store a second instance of the logical block ofthe flash memory device at a second physical location of the flashmemory device; assign a second version number value to the secondinstance; store a third instance of the logical block of the flashmemory device at a third physical location of the flash memory device;and assign the first version number value to the third instance of thelogical block, wherein the third instance includes an update of aportion of the first instance from the first physical location to form afirst portion of the third instance in the third physical location and acopy of a portion of the second instance from the second physicallocation to form a second portion of the third instance in the thirdphysical location; and at least one hardware processor to processinformation stored in the flash memory device.
 8. The system of claim 7,wherein each of the first, second, and third physical locations includesa physical block of the flash memory device.
 9. The system of claim 7,wherein the flash memory device is to store logical sectors of the thirdinstance of the logical block in a sequential order.
 10. The system ofclaim 7, wherein the flash memory device is to store the second instanceof the logical block when the first physical location has aninsufficient cell quantity to store the update of the portion of thefirst instance.
 11. The system of claim 7, wherein the flash memorydevice is to store the third instance when the second physical locationhas an insufficient cell quantity to store an update at least a portionof the second instance of the logical block.
 12. The system of claim 7,wherein the third physical location is the same as the first physicallocation.
 13. The system of claim 7, wherein the flash memory is furtherto: store a fourth instance of the logical block at a fourth physicallocation of the flash memory device, wherein the fourth instance of thelogical block is stored after the second instance of the logical blockis stored and before the third instance of the logical block is stored,and the third instance includes a copy of one of at least a portion ofthe first instance of the logical block, at least the portion of thesecond instance of the logical block, and least a portion of the fourthinstance of the logical block; and assign a fourth version number valueto the fourth instance.
 14. A system comprising: a flash memory deviceincluding a memory array to store a plurality of version number valuesand a plurality of instances of a logical block, each of the versionnumber values being assigned to an instance of the plurality ofinstances of the logical block, to recycle the plurality of versionnumber values after the plurality of version number values reaches aversion quantity limit, and to set an instance quantity limit toindicate a maximum number of valid instances among the plurality ofinstances that is selected to exist at a time in the flash memorydevice, wherein the memory array includes a first block to store a firstinstant of the logical block, a second block to store a second instantof the logic block, and a third block to store a third instant of thelogical block, and wherein the third instance in the third blockincludes an update of a portion of the instance in the first block and acopy of a portion of the instance in the second block; and at least onehardware processor to process information stored in the flash memorydevice.
 15. The system of claim 14, wherein the flash memory device isto set the version quantity limit as a function of the instance quantitylimit, the version quantity limit indicating a quantity of versionnumber values to be assigned to the plurality of instances of thelogical block.
 16. The system of claim 15, wherein the version quantitylimit is two times the instance quantity limit.
 17. The system of claim14, wherein the flash memory device is to remove an indication of theexistence of the instance in the first block after the instance in thesecond block is stored.
 18. The system of claim 14, wherein the flashmemory device is to correct the quantity of instances existing in thememory array when the quantity of instances existing in the memory arrayis greater than the instance quantity limit.
 19. The system of claim 14,wherein the flash memory device is to generate a selected instance ofthe plurality of instance after each fixed quantity of instances of theplurality of instances is generated.
 20. The system of claim 14, whereinthe flash memory device is to consolidate the plurality of instances ofthe logical block when the maximum number of valid instances is reached.